﻿package com.sh.game.util
{
    import flash.utils.*;

    public class Trie extends Object
    {
        private var trieDic:Dictionary;

        public function Trie()
        {
            this.trieDic = new Dictionary();
            return;
        }// end function

        public function add(param1:String) : void
        {
            var _loc_5:String = null;
            var _loc_6:Dictionary = null;
            var _loc_2:* = param1.length;
            var _loc_3:* = this.trieDic;
            var _loc_4:int = 0;
            while (_loc_4 < _loc_2)
            {
                
                _loc_5 = param1.charAt(_loc_4);
                _loc_6 = _loc_3[_loc_5];
                if (!_loc_6)
                {
                    var _loc_7:* = new Dictionary();
                    _loc_6 = new Dictionary();
                    _loc_3[_loc_5] = _loc_7;
                }
                _loc_3 = _loc_6;
                _loc_4++;
            }
            if (!_loc_3[""])
            {
                _loc_3[""] = new Dictionary();
            }
            return;
        }// end function

        public function multAdd(param1:Array) : void
        {
            var _loc_2:String = null;
            for each (_loc_2 in param1)
            {
                
                this.add(_loc_2);
            }
            return;
        }// end function

        public function getRoot() : Dictionary
        {
            return this.trieDic;
        }// end function

        public function traceEach() : void
        {
            this.doTrace(this.trieDic, "");
            return;
        }// end function

        private function doTrace(param1:Dictionary, param2:String) : void
        {
            var _loc_3:String = null;
            for (_loc_3 in param1)
            {
                
                if (_loc_3 == "")
                {
                    continue;
                }
                this.doTrace(param1[_loc_3], param2 + _loc_3);
            }
            return;
        }// end function

    }
}
